package example

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strings"
)

func Case2() {
	fmt.Println("🎯标准输入输出")

	var name1 string
	var age1 int
	fmt.Print("输入姓名：")
	fmt.Scanln(&name1)
	fmt.Print("输入年龄：")
	fmt.Scanln(&age1)

	// 标准输出
	fmt.Fprintln(os.Stdout, "这是通过 fmt.Fprintln 写入输出标准")
	os.Stdout.Write([]byte("这是通过 Writer() 方法写入\n "))

	// 标准错误
	//fmt.Fprintf(os.Stderr, "这是错误信息\n ")

	// 标准输入
	reader := bufio.NewReader(os.Stdin)
	for {
		fmt.Print("> ")
		data, err := reader.ReadString('\n')
		if err != nil {
			if err != io.EOF {
				fmt.Println("输入结束")
				break
			}
			fmt.Println("读取错误：", err)
			break
		}

		// 去除换行符
		data = strings.TrimSpace(data)
		if data == "q" {
			fmt.Println("推出程序")
			break
		}
		if data != "" {
			fmt.Println("你输入了：", data)
		}
	}
}
